import java.io.*;
import java.util.Scanner;

public class IOCopyFiles {
    // 程序代码案例2
    public static void main(String[] args) {
        // 把一个文件拷贝成另一个文件
        // 很简单, 就是把第一个文件按照字节依次读取, 把结果写入到另一个文件中

        // 输入两个路径

        // 表示从什么地方拷贝到哪里去
        // 第一个文件表示 源  , 第二个文件表示 目标
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要拷贝哪一个文件: ");
        String srcPath = scanner.next();
        System.out.println("请输入要拷贝到哪个地方: ");
        String destPath = scanner.next();

        File srcFile = new File(srcPath);
        if(!srcFile.isFile()){
            // 源文件不存在
            // 如果源不是一个文件(是个目录或者不存在)
            // 此时就不做任何操作
            System.out.println("您当前的输入的源路径有误!");
            return;
        }
        File destFile = new File(destPath);
        if (destFile.isFile()){
            // 如果已经存在, 认为也不能拷贝
            System.out.println("您当前输入的目标路径有误!");
            return;
        }

        // 进行拷贝操作
        // 首先要打开文件
        try (InputStream inputStream = new FileInputStream(srcFile); OutputStream outputStream =
                new FileOutputStream(destFile)){ // 这个try() 这个语法 支持包含多个流对象 ,之间用 ; 号分割
            // 打开一个用来读的输入流对象,和一个输出流对象

            // 进行读文件操作
            while(true){  // 一边读 一边写
                int b = inputStream.read(); // 也可以通过读一段数组的操作 , (当前是一个一个字节的拷贝)
                if(b == -1){
                    break;
                }
                outputStream.write(b);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 如果是要拷贝目录 就需要 按照案例1一样进行递归拷贝了
    }
}
